package com.chenjt.juc.three_completableFuture;

import java.sql.Time;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;

/**
 * 注释：
 *
 * @author chenjt
 * @date 2024/7/6 11:22
 */
public class CompletableFutureAPIDemo {

    public static void main(String[] args) throws Exception {
        CompletableFuture<String> completableFuture = CompletableFuture.supplyAsync(() -> {
            try {
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return "abc";
        });

//        System.out.println(completableFuture.get());
//        System.out.println(completableFuture.get(2L, TimeUnit.SECONDS));
//        System.out.println(completableFuture.join());
        /**
         * 1.还没计算完成的情况下，就给一个传入的“xxx”的计算结果（优点：立即获取结果不阻塞）
         * 2.计算完成了就直接返回结果
         */
//        System.out.println(completableFuture.getNow("xxx"));

        /**
         * 1.还没计算完成的情况下面，直接打断计算过程，返回传入的“completeValue”  输出结果：true    completeValue
         * 2.计算完成了就直接返回结果   输出结果：false   abc
         */
        System.out.println(completableFuture.complete("completeValue") + "\t"
            + completableFuture.join());



    }

}
